package util.AST.Comando;

import checker.SemanticException;
import checker.Visitor;
import util.AST.Terminal.ID;

public class ChamadaFuncao extends ComandoSimples {
	
	private String tipo;
	private ID nomeFuncao;
	private Argumentos argumentos;
	
	public ChamadaFuncao(ID nomeF, Argumentos argumentos){
		this.nomeFuncao = nomeF;
		this.argumentos = argumentos;
	}
	
	public ChamadaFuncao(){
		
	}
	
	public ID getNomeFuncao(){
		return this.nomeFuncao;
	}
	
	public Argumentos getArgumentos(){
		return this.argumentos;
	}

	public String toString(int level) {
		int nextLevel = level+5;
		StringBuffer str = new StringBuffer();
		str.append("ChamFun\n");
		if ( this.nomeFuncao != null ) {
			str.append(super.getSpaces(nextLevel) + "|-" + this.nomeFuncao.toString(nextLevel));
		}
		if(this.argumentos != null){
			str.append(super.getSpaces(nextLevel) + "|-" + this.argumentos.toString(nextLevel));
		}
		return str.toString();
	}

	@Override
	public Object visit(Visitor v, Object o) throws SemanticException {
		return v.visitChamadaFuncao(this, o);
	}

	public String getTipo() {
		return this.tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

}
